package com.qust.edu.aliyun.service.impl;

import com.alibaba.druid.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qust.edu.aliyun.dto.ProductDto;
import com.qust.edu.aliyun.mapper.ProductMapper;
import com.qust.edu.aliyun.pojo.Product;
import com.qust.edu.aliyun.service.ProductService;
import com.qust.edu.aliyun.vo.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;

/**
 * projectName: aliyun_guanli
 *
 * @author: 孙春娟
 * time: 2021/9/28 14:12
 * description:
 */
@Service
public class ProductServiceImpl implements ProductService {

    @Autowired
    private ProductMapper productMapper;

    /**
     * 查询全部商品
     * @param productDto
     * @return
     */
    @Override
    public Object getProductByCategory(ProductDto productDto) {
        QueryWrapper<Product> queryWrapper = new QueryWrapper<>();

        queryWrapper.eq("deleted",0);
//        装配分页对应的参数
        Page<Product> page=new Page<>(productDto.getCurrentPage(),productDto.getPageSize());
//        数据查询
        page = productMapper.selectPage(page, queryWrapper);
//        数据分装
        Map data = new HashMap<>();
        data.put("code","001");
        data.put("Product",page.getRecords());
        data.put("total",page.getTotal());
        return data;
    }

    /**
     * 模糊查询商品名，为空时返回所有
     * @param productDto
     * @return
     */
    @Override
    public Object getProductBySearch(ProductDto productDto) {
        //        1.模糊查询商品名
        QueryWrapper<Product> queryWrapper=new QueryWrapper<>();
        if (!StringUtils.isEmpty(productDto.getSearch())){
            queryWrapper.like("product_name",productDto.getSearch());

        }

        Page page = new Page(productDto.getCurrentPage(),productDto.getPageSize());

        page=productMapper.selectPage(page,queryWrapper);

        Map data=new HashMap();
        data.put("code","001");
        data.put("Product",page.getRecords());
        data.put("total",page.getTotal());

        return data;

    }

    /**
     * 删除商品
     * @param productDto
     * @return
     */
    @Override
    public R getDeleteProduct(ProductDto  productDto) {
        Product product = new Product();
        product.setProductId(productDto.getProduct_id());
        product.setDeleted(1);

        int rows=productMapper.updateById(product);

        if (rows==0){
            return R.FAIL("此商品删除失败");
        }
        return R.OK("此商品删除成功！");
    }

    /**
     * 修改商品信息
     * @param product
     * @return
     */
    @Override
    public R getModifyProduct(Product product) {

        product.setCategoryId(null);
        product.setDeleted(null);
//        QueryWrapper<Product> queryWrapper = new QueryWrapper<>();
//        queryWrapper.eq("product_id",product.getProductId());

        //主键mybatils-plus不会自动
        //2.修改用户信息
        int rows=0;
        try {
            //防止传入错误的数据类型！age传入了字符串
            rows=productMapper.updateById(product);
        }catch (Exception e){

        }
        //3.返回结果
        if (rows==0){
            return R.FAIL("数据格式错误！修改错误");
        }
        return R.OK("商品信息修改成功！");
    }

    /**
     * 添加商品
     * @param product
     * @return
     */
    @Override
    public R getAddProduct(Product product) {
       //2.保存数据
        product.setDeleted(0);
        product.setProductId(null);
        int rows=0;
        try {
            rows=productMapper.insert(product);
        }catch (Exception e){
            System.out.println("e = " + e);
        }
//        3.处理结果
        if (rows==0){
            return R.FAIL("保存商品失败！");
        }
        return R.OK("保存商品成功！");
    }
    }




